前一篇我們先介紹了全連接神經網絡 (Fully Connected Neural Network),相信大家還是不太清楚這是什麼,接下來會用幾天的篇幅一一介紹相關的專有名詞,若要理解神經網路,必須先從最小的組成單位 —— 神經元 (Neuron) 開始。
人工神經元的靈感來自於生物神經科學中「神經元」的概念: 人腦中的神經細胞會接收訊號、處理並傳遞訊號給下一個神經元,形成複雜的網絡。人工神經網路 (Artificial Neural Network, ANN) 正是透過數學方式去模擬這樣的運作。
一個人工神經元的輸入與輸出過程可以寫成:
$$
z = \sum\limits_{i=1}^{n} w_i x_i + b
$$
$$
a = \sigma(z)
$$
其中:
先不看激活函數的部分,是不是第一眼會覺得好像在哪裡看過? 沒錯就是我們 Day 2 介紹的線性迴歸,所以神經元本身並不是什麼太高級的東西,就是一個線性輸出而已,為了要讓神經元能夠模擬更複雜的非線性關係,才會在線性輸出後再加上激活函數 (激活函數是什麼明天介紹)
以一個簡單的二元分類例子來看
當多層神經元堆疊,就形成所謂的「多層感知機 (MLP)」
(要完整的過程,看昨天的全連接神經網絡即可)
這段程式碼展示了「一個神經元」如何運算: 輸入三個特徵,經過線性加權、加上偏差,再通過 Sigmoid 激活函數,最後輸出一個介於 (0,1) 的數值
import torch
import torch.nn as nn
# 定義一個簡單的單層神經元 (3 個輸入 -> 1 輸出)
class SimpleNeuron(nn.Module):
def __init__(self):
super(SimpleNeuron, self).__init__()
self.linear = nn.Linear(3, 1) # 3 input features, 1 output
def forward(self, x):
return torch.sigmoid(self.linear(x)) # 使用 sigmoid 激活
# 建立神經元
neuron = SimpleNeuron()
# 假設輸入三個特徵
x = torch.tensor([[0.5, 0.8, 0.2]])
output = neuron(x)
print("輸入:", x)
print("輸出:", output)
神經元是深度學習的基礎構件。它本身的數學原理不複雜,但一旦大量堆疊並透過反向傳播訓練,就能展現強大的表示能力。
理解神經元,能幫助我們看清楚:
接下來,我們將在這個基礎上,進一步介紹其他相關的基礎